<?php

namespace App\Exceptions\Admin\V1;

use Exception;

class GeneralException extends Exception
{
    public $errorCode;
    public $errorMsg;
    public $errorHeaders;

    /**
     * 说明：
     * WITHOUT:不存在1
     * EXIST:存在2
     * FAULT:失败3
     * SUCCESS:成功4
     * UNKNOWN:未知5
     * INVALID:非法6
     * ERROR:错误7
     */

    /*模型_控制器_行为_结果；
    01：两位数标识模型；
    01：两位数标识控制器；
    1：一位数标识行为（一般是C（增加1-Create）U（更新2-Update）R（查询3-Retrieve）D（删除4-Delete））；
    1：一位数标识结果（成功失败等）。
    共六位数即可满足
    */
    const ADMIN_LOGIN_RETRIEVE_INVALID      = 100136;
    const GENERAL_DATA_FIND__WITHOUT        = 100111;
    const GENERAL_SYSTEM_RETRIEVE_UNKNOWN   = 100112;
    const GENERAL_SYSTEM_PERMISSION_INVALID = 100113;

    /**
     * GeneralException constructor.
     *
     * @param int $errorCode
     * @param null $errorMsg
     * @param Exception|null $previous
     * @param array $headers
     */
    public function __construct($errorCode = 0, $errorMsg = null, \Exception $previous = null, array $headers = array())//, $code = 0
    {
        $this->errorCode = $errorCode;
        $this->errorMsg = $errorMsg ? : trans('exception\v1\general.' . $errorCode);
        $this->errorHeaders = $headers;

        parent::__construct($this->errorMsg, $this->errorCode, $previous);
    }
}
